home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / C Headers / Think C HyperCard 2.0 headers / HyperXCmd.h next >
Text File  |  1991-03-18  |  10KB  |  257 lines

  1. /************************************************************
  2.  *
  3.  *    HyperXCmd.h
  4.  *    Definition file for HyperCard XCMDs and XFCNs in C.
  5.  *
  6.  *  Copyright (c) 1991 Symantec Corporation.  All rights reserved.
  7.  *
  8.  *  These interfaces are based on material copyrighted
  9.  *  by Apple Computer, Inc., 1987-1990.
  10.  *
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef  __HYPERXCMD__
  16. #define __HYPERXCMD__  1
  17.  
  18. #ifndef  _MacTypes_
  19. #include <MacTypes.h>
  20. #endif
  21.  
  22. #ifndef _EventMgr_
  23. #include <EventMgr.h>
  24. #endif
  25.  
  26. #ifndef _MenuMgr_
  27. #include <MenuMgr.h>
  28. #endif
  29.  
  30. #ifndef _TextEdit_
  31. #include <TextEdit.h>
  32. #endif
  33.  
  34. #ifndef _StdFilePkg_
  35. #include <StdFilePkg.h>
  36. #endif
  37.  
  38. #ifndef _WindowMgr_
  39. #include <WindowMgr.h>
  40. #endif
  41.  
  42. /* result codes */
  43. enum {
  44. xresSucc = 0,
  45. xresFail,
  46. xresNotImp,
  47.  
  48.  
  49. /* XCMDBlock constants for event.what... */
  50.  
  51. xOpenEvt = 1000,            /* the first event after you are created */
  52. xCloseEvt,                    /* your window is being forced close (Quit?) */
  53. xGiveUpEditEvt,                /* you are losing Edit... */
  54. xGiveUpSoundEvt,            /* you are losing the sound channel... */
  55. xHidePalettesEvt,            /* someone called HideHCPalettes */
  56. xShowPalettesEvt,            /* someone called ShowHCPalettes */
  57. xEditUndo = 1100,            /* Edit——Undo */
  58. xEditCut = 1102,            /* Edit——Cut */
  59. xEditCopy,                    /* Edit——Copy */
  60. xEditPaste,                    /* Edit——Paste */
  61. xEditClear,                    /* Edit——Clear */
  62. xSendEvt = 1200,            /* script has sent you a message (text) */
  63. xSetPropEvt,                /* set a window property */
  64. xGetPropEvt,                /* get a window property */
  65. xCursorWithin = 1300,        /* cursor is within the window */
  66. xMenuEvt = 1400,            /* user has selected an item in your menu */
  67. xMBarClickedEvt,            /* a menu is about to be shown--update if needed */
  68.  
  69.  
  70. xShowWatchInfoEvt = 1501,    /* for variable and message watchers */
  71. xScriptErrorEvt,            /* place the insertion point */
  72. xDebugErrorEvt,                /* user clicked "Debug" at a complaint */
  73. xDebugStepEvt,                /* hilite the line */
  74. xDebugTraceEvt,                /* same as step but tracing */
  75. xDebugFinishedEvt,            /* script ended */
  76.  
  77.  
  78. paletteProc = 2048,            /* Windoid with grow box */
  79. palNoGrowProc = 2052,        /* standard Windoid defproc */
  80. palZoomProc = 2056,            /* Windoid with zoom and grow */
  81. palZoomNoGrow = 2060,        /* Windoid with zoom and no grow */
  82. hasZoom = 8,
  83. hasTallTBar = 2,
  84. toggleHilite = 1
  85. };
  86.  
  87. #define maxCachedChecks            16        /* maximum number of checkpoints in a script */
  88.  
  89.  
  90. /* paramCount is set to these constants when first calling special XThings */
  91. #define xMessageWatcherID        = -2;
  92. #define xVariableWatcherID        = -3;
  93. #define xScriptEditorID            = -4;
  94. #define xDebuggerID                = -5;
  95.  
  96. /* XTalkObjectPtr->objectKind values */
  97. enum {
  98. stackObj = 1,
  99. bkgndObj,
  100. cardObj,
  101. fieldObj,
  102. buttonObj
  103. };
  104.  
  105. typedef struct XCmdBlock *XCmdPtr; 
  106. struct XCmdBlock {
  107.     short paramCount;         /* If = -1 then new use for XWindoids */
  108.     Handle params[16];
  109.     Handle returnValue;
  110.     Boolean passFlag;
  111.  
  112.     Ptr entryPoint;             /* to call back to HyperCard */
  113.     short request;
  114.     short result;
  115.     long inArgs[8];
  116.     long outArgs[4];
  117. };
  118.  
  119. typedef struct XWEventInfo *XWEventInfoPtr; 
  120. struct XWEventInfo {
  121.     EventRecord event;
  122.     WindowPtr eventWindow;
  123.     long eventParams[9];
  124.     Handle eventResult;
  125. };
  126.  
  127. typedef struct XTalkObject *XTalkObjectPtr;
  128. struct XTalkObject {
  129.     short objectKind;        /* stack, bkgnd, card, field, or button */
  130.     long stackNum;            /* reference number of the source stack */
  131.     long bkgndID;
  132.     long cardID;
  133.     long buttonID;
  134.     long fieldID;
  135. };
  136.  
  137.  
  138. typedef struct CheckPts *CheckPtPtr;
  139. typedef CheckPtPtr *CheckPtHandle; 
  140. struct CheckPts {
  141.     short checks[maxCachedChecks];
  142. };
  143.  
  144.  
  145. /****  HyperTalk Utilities  ****/
  146. extern pascal Handle EvalExpr(XCmdPtr paramPtr, StringPtr expr);
  147. extern pascal void SendCardMessage(XCmdPtr paramPtr, StringPtr msg);
  148. extern pascal void SendHCMessage(XCmdPtr paramPtr, StringPtr msg);
  149. extern pascal void RunHandler(XCmdPtr paramPtr, Handle handler);
  150.  
  151. /****  Memory Utilities  ****/
  152. extern pascal Handle GetGlobal(XCmdPtr paramPtr, StringPtr globName);
  153. extern pascal void SetGlobal(XCmdPtr paramPtr, StringPtr globName, Handle globValue);
  154. extern pascal void ZeroBytes(XCmdPtr paramPtr, Ptr dstPtr, long longCount);
  155.  
  156. /****  String Utilities  ****/
  157. extern pascal void ScanToReturn(XCmdPtr paramPtr, Ptr *scanPtr);
  158. extern pascal void ScanToZero(XCmdPtr paramPtr, Ptr *scanPtr);
  159. extern pascal Boolean StringEqual(XCmdPtr paramPtr, StringPtr str1, StringPtr str2);
  160. extern pascal long StringLength(XCmdPtr paramPtr, Ptr strPtr);
  161. extern pascal Ptr StringMatch(XCmdPtr paramPtr, StringPtr pattern, Ptr target);
  162. extern pascal void ZeroTermHandle(XCmdPtr paramPtr, Handle hndl);                                
  163.  
  164. /****  String Conversions  ****/
  165. extern pascal void BoolToStr(XCmdPtr paramPtr, Boolean bool, StringPtr str);
  166. extern pascal void ExtToStr(XCmdPtr paramPtr, double *num, StringPtr str);
  167. extern pascal void LongToStr(XCmdPtr paramPtr, long posNum, StringPtr str);
  168. extern pascal void NumToHex(XCmdPtr paramPtr, long num, short nDigits, StringPtr str);
  169. extern pascal void NumToStr(XCmdPtr paramPtr, long num, StringPtr str);
  170. extern pascal Handle PasToZero(XCmdPtr paramPtr, StringPtr str);
  171. extern pascal void PointToStr(XCmdPtr paramPtr, Point pt, StringPtr str);                        
  172. extern pascal void RectToStr(XCmdPtr paramPtr, Rect *rct, StringPtr str);                        
  173. extern pascal void ReturnToPas(XCmdPtr paramPtr, Ptr zeroStr, StringPtr pasStr);
  174. extern pascal Boolean StrToBool(XCmdPtr paramPtr, StringPtr str);
  175. extern pascal void StrToExt(XCmdPtr paramPtr, double *num, StringPtr str);
  176. extern pascal long StrToLong(XCmdPtr paramPtr, StringPtr str);
  177. extern pascal long StrToNum(XCmdPtr paramPtr, StringPtr str);
  178. extern pascal void StrToPoint(XCmdPtr paramPtr, StringPtr str, Point *pt);                        
  179. extern pascal void StrToRect(XCmdPtr paramPtr, StringPtr str, Rect *rct);                        
  180. extern pascal void ZeroToPas(XCmdPtr paramPtr, Ptr zeroStr, StringPtr pasStr);
  181.  
  182. /****  Field Utilities  ****/
  183. extern pascal Handle GetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID);
  184. extern pascal Handle GetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, StringPtr fieldName);
  185. extern pascal Handle GetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum);
  186. extern pascal void SetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  187.     Handle fieldVal);
  188. extern pascal void SetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag,
  189.     StringPtr fieldName, Handle fieldVal);
  190. extern pascal void SetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum,
  191.     Handle fieldVal);
  192. extern pascal TEHandle GetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  193.     short fieldNum, StringPtr fieldNamePtr);                                                    
  194. extern pascal void SetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  195.     short fieldNum, StringPtr fieldNamePtr, TEHandle fieldTE);                                    
  196.  
  197. /****  Miscellaneous Utilities  ****/  /* ALL NEW */
  198. extern pascal void BeginXSound(XCmdPtr paramPtr);
  199. extern pascal void EndXSound(XCmdPtr paramPtr);
  200. extern pascal Boolean GetFilePath(XCmdPtr paramPtr, StringPtr fileName, short numTypes, SFTypeList typeList,
  201.     Boolean askUser, OSType *fileType, StringPtr fullName);
  202. extern pascal void GetXResInfo(XCmdPtr paramPtr, short *resFile, short *resID);
  203. extern pascal void Notify(XCmdPtr paramPtr);
  204. extern pascal void SendHCEvent(XCmdPtr paramPtr, EventRecord *event);
  205. extern pascal void SendWindowMessage(XCmdPtr paramPtr, WindowPtr windPtr, 
  206.     StringPtr windowName, Handle msg);
  207. extern pascal WindowPtr FrontDocWindow(XCmdPtr paramPtr);
  208. extern pascal long StackNameToNum(XCmdPtr paramPtr, StringPtr stackName);
  209. extern pascal short ShowHCAlert(XCmdPtr paramPtr, short dlgID, StringPtr promptStr);
  210.  
  211. /****  Creating and Disposing XWindoids  ****/  /* ALL NEW */
  212. extern pascal WindowPtr NewXWindow(XCmdPtr paramPtr, Rect *boundsRect, StringPtr title, 
  213.    Boolean visible, short procID, Boolean color, Boolean floating);
  214. extern pascal WindowPtr GetNewXWindow(XCmdPtr paramPtr, ResType templateType, short 
  215.    templateID, Boolean color, Boolean floating);
  216. extern pascal void CloseXWindow(XCmdPtr paramPtr, WindowPtr window);
  217.  
  218. /****  XWindoid Utilities  ****/  /* ALL NEW */
  219. extern pascal void HideHCPalettes(XCmdPtr paramPtr);
  220. extern pascal void ShowHCPalettes(XCmdPtr paramPtr);
  221. extern pascal void RegisterXWMenu(XCmdPtr paramPtr, WindowPtr window, MenuHandle menu, Boolean registering);
  222. extern pascal void SetXWIdleTime(XCmdPtr paramPtr, WindowPtr window, long interval);
  223. extern pascal void XWHasInterruptCode(XCmdPtr paramPtr, WindowPtr window, Boolean haveCode);
  224. extern pascal void XWAlwaysMoveHigh(XCmdPtr paramPtr, WindowPtr window, Boolean moveHigh);
  225. extern pascal void XWAllowReEntrancy(XCmdPtr paramPtr, WindowPtr window, Boolean allowSysEvts, Boolean allowHCEvts);
  226.  
  227. /****  Text Editing Utilities  ****/  /* ALL NEW */
  228. extern pascal void BeginXWEdit(XCmdPtr paramPtr, WindowPtr window);
  229. extern pascal void EndXWEdit(XCmdPtr paramPtr, WindowPtr window);
  230. extern pascal Ptr HCWordBreakProc(XCmdPtr paramPtr);
  231. extern pascal void PrintTEHandle(XCmdPtr paramPtr, TEHandle hTE, StringPtr header);
  232.  
  233. /****  Script Editor support  ****/  /* ALL NEW */
  234. extern pascal CheckPtHandle GetCheckPoints(XCmdPtr paramPtr);
  235. extern pascal void SetCheckPoints(XCmdPtr paramPtr, CheckPtHandle checkLines);
  236. extern pascal void FormatScript(XCmdPtr paramPtr, Handle scriptHndl, long *insertionPoint, Boolean quickFormat);
  237. extern pascal void SaveXWScript(XCmdPtr paramPtr, Handle scriptHndl);
  238. extern pascal void GetObjectName(XCmdPtr paramPtr, XTalkObjectPtr object, StringPtr objName);
  239. extern pascal void GetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr object, Handle *scriptHndl);
  240. extern pascal void SetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr object, Handle scriptHndl);
  241.  
  242. /****  Debugging Tools support  ****/  /* ALL NEW */
  243. extern pascal void AbortScript(XCmdPtr paramPtr);
  244. extern pascal void GoScript(XCmdPtr paramPtr);
  245. extern pascal void StepScript(XCmdPtr paramPtr, Boolean stepInto);
  246. extern pascal void CountHandlers(XCmdPtr paramPtr, short *handlerCount);
  247. extern pascal void GetHandlerInfo(XCmdPtr paramPtr, short handlerNum, StringPtr handlerName, 
  248.                                   StringPtr objectName, short *varCount);
  249. extern pascal void GetVarInfo(XCmdPtr paramPtr, short handlerNum, short varNum, StringPtr varName, 
  250.                               Boolean *isGlobal, StringPtr varValue, Handle varHndl);
  251. extern pascal void SetVarValue(XCmdPtr paramPtr, short handlerNum, short varNum, Handle varHndl);
  252. extern pascal Handle GetStackCrawl(XCmdPtr paramPtr);
  253. extern pascal void TraceScript(XCmdPtr paramPtr, Boolean traceInto);
  254.  
  255.  
  256. #endif       /* UsingHyperXCmd */
  257.